Плохо! Плохо!:  0
Показано с 1 по 2 из 2

Тема: [MV + MZ] PluginsWorker

  1. #1
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию [MV + MZ] PluginsWorker

    Название плагина: DKR_PluginsWorker

    Автор: DarchanKaen

    Версия: 2.0

    Дата выхода:
    Версия 2.0 - 18.11.2021
    Версия 1.0 - 12.11.2021

    Описание плагина:
    Плагин позволяет включать или выключать все плагины.

    Нюансы:
    0. Плагин не выключает себя.
    1. Для того, что бы игра корректно считала факт выключения / включения плагинов, ее нужно перезапустить; в плагине есть возможность автоперезапуска.
    2. Происходит работа с файловой системой, а именно - перезаписывается файл plugins.js (и только он!).
    3. В версии 2.0, при отключенном автоперезапуске игры и ручном включении / выключении нескольких плагинов подряд - должна быть пауза минимум в 15 кадров!

    Использование плагина(одинаково и для MV , и для MZ):

    Параметры плагина
    В параметрах можно указать: перезапускать ли игру автоматически после вкл./выкл. плагинов, или нет.

    Команды (в эвенте, в команде "Скрипт"):

    DKR.PluginsWorker.disableAllPlugins() - выключить все плагины (кроме себя);

    DKR.PluginsWorker.enableAllPlugins() - включает все плагины;

    DKR.PluginsWorker.disableConcretePlugin(pluginName ) - выключает плагин с заданным именем;
    DKR.PluginsWorker.enableConcretePlugin(pluginName) - включает плагин с заданным именем;
    где pluginName - имя плагина в одинарных или двойных кавычках (например, 'YEP_SkillCore');

    DKR.PluginsWorker.isGameReloadAfterPluginsModify(t rue / false) - включает / выключает перезапуск игры после вкл./выкл. плагинов, если в параметре было указано иное.
    true - перезапускать, false - не перезапускать.

    DKR.PluginsWorker.forceReloadGame() - форсированный перезапуск игры.

    Код:

    Спойлер Код плагина, версия 2.0:

    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR PluginsWorker
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MV, MZ
     *  DKR_PluginsWorker.js
     *-----------------------------------------------------------------------------
     *  18.11.2021 - Версия 2.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @target MV, MZ
     * @plugindesc (v.2.0.0)  Плагин позволяет принудительно включать/выключать плагины(кроме себя).
     * @help
     *   DKR PluginsWorker 2.0
     * ----------------------------------------------------------------------------
     * ----Общая информация:
     *
     * Плагин позволяет включать или выключать все плагины.
     * Обратите внимание - для вступления изменений в силу игра должна быть перезапущена!
     * По-умолчанию плагин перезапускате игру после вкл./выкл. плагинов, но это можно отключить
     * в параметрах плагина. Себя плагин не выключает.
     *
     * ----Использование:
     *
     * ---Параметры плагина
     * В параметрах можно указать: перезапускать ли игру автоматически после вкл./выкл. плагинов, или нет.
     *
     * ---Команды (для раздела "Скрипт"):
     * --Управляющие команды:
     *
     * DKR.PluginsWorker.disableAllPlugins() - выключить все плагины (кроме себя);
     * DKR.PluginsWorker.enableAllPlugins() - включает все плагины;
     * DKR.PluginsWorker.disableConcretePlugin(pluginName) - выключает плагин с заданным именем;
     * DKR.PluginsWorker.enableConcretePlugin(pluginName) - включает плагин с заданным именем;
     * 	где pluginName - имя плагина в одинарных или двойных кавычках (например, 'YEP_SkillCore');
     * ! Между командами вкл./выкл. конкретных плагинов нужна пауза в 15 кадров минимум !
     * DKR.PluginsWorker.isGameReloadAfterPluginsModify(true / false) - включает / выключает перезапуск
     * игры после вкл./выкл. плагинов, если в параметре было указано иное. 
     * 	true - перезапускать, false - не перезапускать.
     * DKR.PluginsWorker.forceReloadGame() - форсированный перезапуск игры.
     *
     * ----------------------------------------------------------------------------
     * @param reloadGameAfterModify
     * @type boolean
     * @desc Перезапускать ли игру после вкл./выкл. плагинов?
     * @default true
     */
     
     
    
    var Imported = Imported || {};
    Imported.DKR_PluginsWorker = true;
    
    var DKR = DKR || {};          
    DKR.PluginsWorker = DKR.PluginsWorker || {}; 
    DKR.PluginsWorker.version = 2.0;
    
    DKR.PluginsWorker.parameters = PluginManager.parameters('DKR_PluginsWorker_2');
    
    
    ( () => {
    	
    	
    	
    	//----DATA
    	let doGameReloadAfterModifyPlugins = eval( String( DKR.PluginsWorker.parameters['reloadGameAfterModify'] ) );
    	let concretePluginToDisable = '';
    	let concretePluginToEnable = '';
    	let pluginsToDisableExceptList = [];
    	let pluginsToEnableExceptList = [];
    	
    	const pluginSelfName = 'DKR_PluginsWorker';
    	const pluginsFilePath = 'js/plugins.js';
    	const fileSystem = require('fs');
    	
    
    	
    	//----LOGIC
    	const openPluginsFile = (callbackTask) =>{
    		try{
    			let xhr = new XMLHttpRequest();
    			let pluginsFileData  = -1;
    			
    			xhr.open('GET', pluginsFilePath);
    			xhr.overrideMimeType('application/json');
    			xhr.onload = function() {
    				if (xhr.status < 400) {
    					pluginsFileData = xhr.responseText;
    						
    					callbackTask( pluginsFileData );	
    						
    					return pluginsFileData;
    				}
    			}
    			
    			xhr.send();
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_OPEN: unknown error on file ${url} opening!!!`);
    			console.log(error);
    			return false;
    		}
    	}	
    		
    
    	const offAllPlugins = () => {
    		const pluginsFileData = openPluginsFile(disablePluginsData);
    	}	
    		
    		
    	const onAllPlugins = () => {
    		const pluginsFileData = openPluginsFile(enablePluginsData);
    	}	
    		
    			
    	const disablePluginsData = (pluginsFileData) => {
    		
    		let pluginsDataParsedList = pluginsFileData.split('}},');
    		let crackedPluginsData = [];
    			
    		
    		for(let n = 0; n < pluginsDataParsedList.length; n++){
    			if( true === pluginsDataParsedList[n].includes(pluginSelfName) ){
    				//-THIS PLUGIN
    				crackedPluginsData[n] = pluginsDataParsedList[n];
    			}else{
    				//-NOT-THIS PLUGIN
    				//--2.0
    				if('' === concretePluginToDisable){
    					crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":true', '"status":false');
    				}else{
    					if( true === pluginsDataParsedList[n].includes(concretePluginToDisable) ){
    						crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":true', '"status":false');
    					}else{
    						crackedPluginsData[n] = pluginsDataParsedList[n];
    					}
    				}
    				
    			}
    		}
    		
    		//--2.0
    		if('' !== concretePluginToDisable){
    			concretePluginToDisable = '';
    		}
    		
    		let unitedPluginsData = crackedPluginsData.join('}},'); 
    
    		try{
    			console.log('concretePluginToDisable:', concretePluginToDisable);
    			fileSystem.writeFileSync(pluginsFilePath, unitedPluginsData);
    			if(true === doGameReloadAfterModifyPlugins){
    				location.reload();
    			}
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_OFF: unknown error on file ${url} writing!!!`);
    			console.log(error);
    			return false;
    		}
    		
    	}
    	
    	
    	const enablePluginsData = (pluginsFileData) => {
    		
    		let pluginsDataParsedList = pluginsFileData.split('}},');
    		let crackedPluginsData = [];
    		
    		for(let n = 0; n < pluginsDataParsedList.length; n++){
    			
    			//--2.0
    			if('' === concretePluginToEnable){
    				crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":false', '"status":true');
    			}else{
    				if( true === pluginsDataParsedList[n].includes(concretePluginToEnable) ){
    					crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":false', '"status":true');
    				}else{
    					crackedPluginsData[n] = pluginsDataParsedList[n];
    				}
    			}
    			
    		}
    		
    		//--2.0
    		if('' !== concretePluginToEnable){
    			concretePluginToEnable = '';
    		}
    		
    		let unitedPluginsData = crackedPluginsData.join('}},'); 
    
    		try{
    			fileSystem.writeFileSync(pluginsFilePath, unitedPluginsData);
    			if(true === doGameReloadAfterModifyPlugins){
    				location.reload();
    			}
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_ON: unknown error on file ${url} writing!!!`);
    			console.log(error);
    			return false;
    		}
    		
    	}
    		
    		
    		
    	//----COMMANDS
    	DKR.PluginsWorker.disableAllPlugins = function(){
    		offAllPlugins();
    	}
    	
    	DKR.PluginsWorker.enableAllPlugins = function(){
    		onAllPlugins();
    	}
    
    	DKR.PluginsWorker.isGameReloadAfterPluginsModify = function(isReload = true){
    		doGameReloadAfterModifyPlugins = isReload;
    	}
    
    	//--2.0
    	DKR.PluginsWorker.disableConcretePlugin = function(concretePluginName){
    		concretePluginToDisable = concretePluginName;
    		offAllPlugins();
    	}
    
    	DKR.PluginsWorker.enableConcretePlugin = function(concretePluginName){
    		concretePluginToEnable = concretePluginName;
    		onAllPlugins();
    	}
    
    	DKR.PluginsWorker.forceReloadGame = function(){
    		location.reload();
    	}
    
    
    })();


    Спойлер Код плагина, версия 1.0:

    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR PluginsWorker
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MV, MZ
     *  DKR_PluginsWorker.js
     *-----------------------------------------------------------------------------
     *  12.11.2021 - Версия 1.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @target MV, MZ
     * @plugindesc (v.1.0.0)  Плагин позволяет принудительно включать/выключать плагины(кроме себя).
     * @help
     *   DKR PluginsWorker 1.0
     * ----------------------------------------------------------------------------
     * ----Общая информация:
     *
     * Плагин позволяет включать или выключать все плагины.
     * Обратите внимание - для вступления изменений в силу игра должна быть перезапущена!
     * По-умолчанию плагин перезапускате игру после вкл./выкл. плагинов, но это можно отключить
     * в параметрах плагина. Себя плагин не выключает.
     *
     * ----Использование:
     *
     * ---Параметры плагина
     * В параметрах можно указать: перезапускать ли игру автоматически после вкл./выкл. плагинов, или нет.
     *
     * ---Команды (для раздела "Скрипт"):
     * --Управляющие команды:
     *
     * DKR.PluginsWorker.disableAllPlugins() - выключает все плагины (кроме себя);
     * DKR.PluginsWorker.enableAllPlugins() - включает все плагины;
     * DKR.PluginsWorker.isGameReloadAfterPluginsModify(true / false) - включает / выключает перезапуск
     * игры после вкл./выкл. плагинов, если в параметре было указано иное. 
     * true - перезапускать, false - не перезапускать.
     *
     * ----------------------------------------------------------------------------
     * @param reloadGameAfterModify
     * @type boolean
     * @desc Перезапускать ли игру после вкл./выкл. плагинов?
     * @default true
     */
     
     
    
    var Imported = Imported || {};
    Imported.DKR_PluginsWorker = true;
    
    var DKR = DKR || {};          
    DKR.PluginsWorker = DKR.PluginsWorker || {}; 
    DKR.PluginsWorker.version = 1.0;
    
    DKR.PluginsWorker.parameters = PluginManager.parameters('DKR_PluginsWorker');
    
    
    ( () => {
    	
    	
    	
    	//----DATA
    	let doGameReloadAfterModifyPlugins = eval( String( DKR.PluginsWorker.parameters['reloadGameAfterModify'] ) );
    	
    	const pluginSelfName = 'DKR_PluginsWorker';
    	const pluginsFilePath = 'js/plugins.js';
    	const fileSystem = require('fs');
    	
    
    	
    	//----LOGIC
    	const openPluginsFile = (callbackTask) =>{
    		try{
    			let xhr = new XMLHttpRequest();
    			let pluginsFileData  = -1;
    			
    			xhr.open('GET', pluginsFilePath);
    			xhr.overrideMimeType('application/json');
    			xhr.onload = function() {
    				if (xhr.status < 400) {
    					pluginsFileData = xhr.responseText;
    						
    					callbackTask( pluginsFileData );	
    						
    					return pluginsFileData;
    				}
    			}
    			
    			xhr.send();
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_OPEN: unknown error on file ${url} opening!!!`);
    			console.log(error);
    			return false;
    		}
    	}	
    		
    
    	const offAllPlugins = () => {
    		const pluginsFileData = openPluginsFile(disablePluginsData);
    	}	
    		
    		
    	const onAllPlugins = () => {
    		const pluginsFileData = openPluginsFile(enablePluginsData);
    	}	
    		
    		
    	const disablePluginsData = (pluginsFileData) => {
    		
    		let pluginsDataParsedList = pluginsFileData.split('}},');
    		let crackedPluginsData = [];
    			
    		
    		for(let n = 0; n < pluginsDataParsedList.length; n++){
    			if( true === pluginsDataParsedList[n].includes(pluginSelfName) ){
    				//-THIS PLUGIN
    				crackedPluginsData[n] = pluginsDataParsedList[n];
    			}else{
    				//-NOT-THIS PLUGIN
    				crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":true', '"status":false');
    			}
    		}
    		
    		let unitedPluginsData = crackedPluginsData.join('}},'); 
    
    		try{
    			fileSystem.writeFileSync(pluginsFilePath, unitedPluginsData);
    			if(true === doGameReloadAfterModifyPlugins){
    				location.reload();
    			}
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_OFF: unknown error on file ${url} writing!!!`);
    			console.log(error);
    			return false;
    		}
    		
    	}
    	
    	
    	const enablePluginsData = (pluginsFileData) => {
    		
    		let pluginsDataParsedList = pluginsFileData.split('}},');
    		let crackedPluginsData = [];
    		
    		for(let n = 0; n < pluginsDataParsedList.length; n++){
    			crackedPluginsData[n] = pluginsDataParsedList[n].replace('"status":false', '"status":true');
    		}
    		
    		let unitedPluginsData = crackedPluginsData.join('}},'); 
    
    		try{
    			fileSystem.writeFileSync(pluginsFilePath, unitedPluginsData);
    			if(true === doGameReloadAfterModifyPlugins){
    				location.reload();
    			}
    		}catch(error){
    			console.log(`DKR.PluginsWorker_try_ON: unknown error on file ${url} writing!!!`);
    			console.log(error);
    			return false;
    		}
    		
    	}
    		
    		
    		
    	//----COMMANDS
    	DKR.PluginsWorker.disableAllPlugins = function(){
    		offAllPlugins();
    	}
    	
    
    	DKR.PluginsWorker.enableAllPlugins = function(){
    		onAllPlugins();
    	}
    
    	DKR.PluginsWorker.isGameReloadAfterPluginsModify = function(isReload = true){
    		doGameReloadAfterModifyPlugins = isReload;
    	}
    
    
    
    })();

    Загрузка:
    Спойлер Ссылка на загрузку версии 2.0:

    Спойлер Ссылка на загрузку версии 1.0:


    Условия поставки плагина:
    Поставляется AS-IS.
    Вся ответственность при использовании - на Пользователе!
    !

    Совместимость:
    Плагин не вносит изменений в системы мейкера, а работает с файлом plugins.js.
    Если какие-то плагины ему не нравятся - он не конфликтует с ними, а просто отключает. =)

    Спойлер Лирическое отступление:
    Если будет форумная игра по типу "ярмарка" да еще и на MV / MZ , по мнению Ральфа возможность отключение плагинов может помочь. Ну, посмотрим.
    Последний раз редактировалось Darchan Kaen; 18.11.2021 в 00:47. Причина: Вышла версия плагина 2.0

  2. #2
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Вышла версия плагина 2.0.
    Добавлены команды скрипта для включения / выключения отдельного плагина (одного за один вызов скрипта), а также команда скрипта для перезапуска игры.
    Добавлен код новой версии плагина, ссылки на скачивание и обновлены команды скрипта и "нюансы".

    Обратите внимание!
    Точное имя нужного плагина смотрите в файле plugins.js, что находится в папке js проекта; имя плагина нужно указывать в одинарных или двойных кавычках.

    Если вы отключили автоперезапуск игры после использования данного плагина и включаете / выключаете несколько плагинов подряд, то перед вызовом команды скрипта ставьте паузу минимум в 15 кадров.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MV + MZ] PluginsWorker